package cn.changshengjue.dakong.utils;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

import org.apache.commons.lang.StringUtils;
import org.bukkit.inventory.ItemStack;

public class Utils {

	/**
	 * 把集合中的&字符替换为§
	 * 
	 * @param list
	 * @return
	 */
	public static List<String> listReplace(List<String> list) {
		List<String> lists = new ArrayList<String>();
		for (String string : list) {
			lists.add(string.replace("&", "§"));
		}
		return lists;
	}

	/**
	 * 传入最大值最小值 返回随机数
	 * 
	 * @param min
	 * @param max
	 * @return
	 */
	public static double getRandomNumberInRange(double min, double max) {

		Random r = new Random();
		return r.doubles(min, (max)).findFirst().getAsDouble();

	}

	/**
	 * 把字符串的颜色字符删除
	 * 
	 * @param str
	 * @return
	 */
	public static String strColorRemove(String str) {
		return str.replace("&", "§").replace("§1", "").replace("§2", "").replace("§3", "").replace("§4", "")
				.replace("§5", "").replace("§6", "").replace("§7", "").replace("§8", "").replace("§9", "")
				.replace("§0", "").replace("§l", "").replace("§a", "").replace("§b", "").replace("§c", "")
				.replace("§d", "").replace("§e", "").replace("§f", "");
	}

	/**
	 * set集合转list集合
	 * 
	 * @param set
	 * @return
	 */
	public static List<String> SetChangeList(Set<String> set) {
		List<String> kyes = new ArrayList<String>();
		for (String str : set) {
			if (str != null) {
				kyes.add(str);
			}
		}
		return kyes;
	}

	/**
	 * 把集合中包含指定字符串的字符串删除
	 * 
	 * @param str 指定字符
	 * @return
	 */
	public static List<String> listReplaceNull(List<String> list, String str) {
		List<String> arrayList = new ArrayList<String>();
		for (String strs : list) {
			if (!strs.contains(str)) {
				arrayList.add(strs);
			}
		}
		return arrayList;
	}

	/**
	 * 传入字符串获取数字
	 * 
	 * @param str
	 * @return
	 */
	public static String getNumber(String str) {
		String a = str;
		String regEx = "[^0-9]";
		Pattern p = Pattern.compile(regEx);
		Matcher m = p.matcher(a);
		String trim = m.replaceAll("").trim();
		return trim;
	}

	/***
	 * 传入字符串判断他是不是 数字
	 * 
	 * @param str
	 * @return
	 */
	public static boolean isNumber(String str) {
		if (StringUtils.isBlank(str)) {
			return false;
		}
		if (str == null) {
			return false;
		}
		if (str.equals("")) {
			return false;
		}
		Pattern pattern = Pattern.compile("^(\\-|\\+)?\\d+(\\.\\d+)?$");
		return pattern.matcher(str).matches();
	}

	/**
	 * 删除list里面的另外一个list的数据
	 * 
	 * @return
	 */
	public static List<String> removeListForList(List<String> lista, List<String> listb) {
		ArrayList<String> arrayList = new ArrayList<String>();
		for (String string : lista) {
			arrayList.add(string);
		}
		for (String s : listb) {
			for (String s1 : listb) {
				if (s.equals(s1) == false) {
					arrayList.remove(s);
				}
			}
		}
		return arrayList;
	}

	/**
	 * 把一个listb从指定行添加到lista
	 * 
	 * @param lista
	 * @param listb
	 * @return
	 */
	public static List<String> setLoreForLine(List<String> lista, List<String> listb, int line) {
		ArrayList<String> arrayList = new ArrayList<String>();
		for (String string : lista) {
			arrayList.add(string);
		}

		for (int i = 0; i < listb.size(); i++) {
			arrayList.add(i + line, listb.get(i));
		}
		return arrayList;
	}

	/**
	 * 获取指定两行lore之间的所有lore
	 * 
	 * @param args
	 */
	public static List<String> getLoreListToList(List<String> lista, String a, String b) {
		ArrayList<String> arrayList = new ArrayList<String>();
		int a1 = 0;
		int b1 = 0;
		int i = 0;
		for (String s : lista) {
			if (s.equals(a)) {
				a1 = i;
			}

			if (s.equals(b)) {
				b1 = i;
			}
			i++;
		}

		for (int j = a1; j <= b1; j++) {
			arrayList.add(lista.get(j));
		}
		return arrayList;
	}

	public static Object jisuan(String str) {
		try {
			ScriptEngineManager manager = new ScriptEngineManager();
			ScriptEngine engine = manager.getEngineByName("js");
			Object result = engine.eval(str);
			// System.out.println("结果类型:" + result.getClass().getName() + ",计算结果:" +
			// result);
			return result;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 判断物品是不是null或空气 true是，false不是
	 * 
	 * @param item
	 * @return
	 */
	public static boolean itemIsAIR(ItemStack item) {
		if (item == null) {
			return true;
		}
		if (item.toString().contains("AIR")) {
			return true;
		}
		return false;
	}

	/**
	 * 判断物品是否没有lore true无，false有
	 * 
	 * @param item
	 * @return
	 */
	public static boolean itemLoreIsNull(ItemStack item) {
		if (item == null) {
			return true;
		}
		if (item.toString().contains("AIR")) {
			return true;
		}

		if (!item.toString().contains("lore")) {
			return true;
		}
		return false;
	}

	/**
	 * 判断物品是否没有名字 true无名字，false有名字
	 * 
	 * @param item
	 * @return
	 */
	public static boolean itemDisplayNameIsNull(ItemStack item) {
		if (item == null) {
			return true;
		}
		if (item.toString().contains("AIR")) {
			return true;
		}
		if (!item.toString().contains("display-name")) {
			return true;
		}
		return false;
	}

	/**
	 * 判断物品是否没有名字和lore true没有名字lore，false有
	 * 
	 * @param item
	 * @return
	 */
	public static boolean itemDisplayNameAndLoreIsNull(ItemStack item) {
		if (item == null) {
			return true;
		}
		if (item.toString().contains("AIR")) {
			return true;
		}

		if (!item.toString().contains("lore")) {
			return true;
		}
		if (!item.toString().contains("display-name")) {
			return true;
		}
		return false;
	}

	public static void main(String[] args) {

		System.out.println(jisuan("0.88"));
	}
}
